package rescsa.gob.pe.seguridad.dao;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import javax.sql.DataSource;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
import org.springframework.jdbc.core.simple.SimpleJdbcTemplate;
import org.springframework.stereotype.Repository;

import rescsa.gob.pe.constants.PgSqlQuerys;
import rescsa.gob.pe.constants.RowMapperConstants;
import rescsa.gob.pe.seguridad.bean.PaginaBEAN;
import rescsa.gob.pe.seguridad.bean.RolBEAN;

@Repository
public class PaginaDAO {
	private SimpleJdbcTemplate simpleJdbcTemplate;
    private JdbcTemplate jdbcTemplate;
	private NamedParameterJdbcTemplate namedParameterJdbcTemplate;
	
	@Autowired
	public void init(DataSource dataSource) {
		this.simpleJdbcTemplate = new SimpleJdbcTemplate(dataSource);
		this.jdbcTemplate=new JdbcTemplate(dataSource);
		this.namedParameterJdbcTemplate=new NamedParameterJdbcTemplate(dataSource);
	}
	
	//listar paginas por Rol
	@SuppressWarnings("unchecked")
	public List<PaginaBEAN> listarPorRol(RolBEAN rol, int nivel, int padre){
		String sql = PgSqlQuerys.OBTENER_PAGINAS_POR_ROL;
		Map<String, Object> parametros= new HashMap<String, Object>();		
		parametros.put("p_nivel_pagina", nivel);
		parametros.put("p_pagina_padre", padre);
//		parametros.put("p_rol", rol.getId_rol());
		parametros.put("p_rol", rol.getC_rol());
			
		return this.simpleJdbcTemplate.query(sql, new RowMapperConstants.PaginaMapper(), parametros);	
	}
	
	
	@SuppressWarnings("unused")
	public int obtenerMenorNivel(RolBEAN rol){
		String sql = PgSqlQuerys.OBTENER_MENOR_NIVEL;
		Map<String, Object> parametros= new HashMap<String, Object>();		
//		parametros.put("p_rol", rol.getId_rol());
		parametros.put("p_rol", rol.getC_rol());
		
		return this.simpleJdbcTemplate.queryForInt(sql, parametros);
	}
	
	@SuppressWarnings("unused")
	public int obtenerPadre(RolBEAN rol, int nivel){
		String sql = PgSqlQuerys.OBTENER_PADRE;
		Map<String, Object> parametros= new HashMap<String, Object>();		
//		parametros.put("p_rol", rol.getId_rol());
		parametros.put("p_rol", rol.getC_rol());		
		parametros.put("p_nivel", nivel);
		
		return this.simpleJdbcTemplate.queryForInt(sql, parametros);
	}
	
	
}
